package com.mybatis.student;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class UserManage {
    public static void main(String[] args) throws IOException {
        InputStream inputStream;
        inputStream = Resources.getResourceAsStream("config/student-config.xml");
        SqlSessionFactory ssf;
        ssf = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = ssf.openSession(true);

        // 查询所有的用户记录
        List<User> users = session.selectList("queryAllUser");
        System.out.println("查询所有的用户记录:");
        for (User user : users) {
            System.out.println(user);
        }

        // 插入一条用户记录
        String newNumber = "20220102003"; // 修改为一个不存在的 number 值
        User existingUser = session.selectOne("queryUserByNumber", newNumber);
        if (existingUser == null) {
            User newUser = new User();
            newUser.setNumber(newNumber);
            newUser.setPassword("234561");
            newUser.setIdentity("学生");
            System.out.println("插入一条用户记录:");
            System.out.println(newUser);
            session.insert("addUser", newUser);
        } else {
            System.out.println("用户记录已存在，无需插入。");
        }

        // 查询账号为20220102002的用户记录
        User result_user = session.selectOne("queryUserByNumber", "20220102002");
        System.out.println("查询账号为20220102002的用户记录:");
        System.out.println(result_user);

        // 更新账号为20220102002的用户密码
        if (result_user != null) {
            String new_password = "200658";
            result_user.setPassword(new_password);
            session.update("updateUserPassword", result_user);
            System.out.println("更新账号为20220102002的用户密码为: " + new_password);
        } else {
            System.out.println("账号为20220102002的用户记录不存在，无法更新密码。");
        }

        // 查询身份为学生的用户记录
        String identity = "学生";
        List<User> students = session.selectList("queryUsersByIdentity", identity);
        System.out.println("查询身份为学生的用户记录:");
        for (User student : students) {
            System.out.println(student);
        }
        // 删除账号为20220102002的用户记录
        String deleteNumber = "20220102002";
        int rowsAffected = session.delete("deleteUserByNumber", deleteNumber);
        if (rowsAffected > 0) {
            System.out.println("成功删除账号为 " + deleteNumber + " 的用户记录。");
        } else {
            System.out.println("账号为 " + deleteNumber + " 的用户记录不存在，无法删除。");
        }

        session.close();
    }
}
